﻿/*

给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

#include <stdlib.h>
#include <iostream>
#include <vector>
using namespace std;

int removeElement1(vector<int>& nums, int val) 
{
	if (nums.size() == 0)
	{
		return 0;
	}
	int i = 0;int j = 0;
	while (i < nums.size()&& j < nums.size())
	{
		if (nums[i] == val)
		{
			for ( j = i + 1; j < nums.size(); j++)
			{
				if (nums[j] != val)
				{
					nums[i] = nums[j];
					i++;
				}
			}
		}
		else
		{
			i++;
		}
		
	}
	return  i;
}

int removeElement(vector<int>& nums, int val)
{
	if (nums.size() == 0)
	{
		return 0;
	}
	int i = 0, j = 0;
	for (i = 0; i < nums.size(); i++)
	{
		if (nums[i] != val)
		{
			nums[j] = nums[i];
			j++;
		}
	}
	return j;
}

int main()
{
	vector<int> nums = { 0, 1, 2, 2, 3, 0, 4, 2 };
	int val = 2;
	cout << removeElement(nums,val );
	system("pause");
	return 0;
}

*/